layui.use(['table', 'form', 'laydate', 'jquery', 'layer', 'transfer'], function () {
    var table = layui.table,
        form = layui.form,
        laydate = layui.laydate,
        $ = layui.$,
        layer = layui.layer,
        transfer = layui.transfer
    ;
    //全局变量配置
    var userinfo = '' //保存查询的用户信息
    var rightTransfer = []
    var pid = '' //操作的项目id
    var money = {
        amountPrice: 0.00, //应收费用
        preferentialPrice: 0.00, //减免金额
        actualPrice: 0.00, //实收费用
        arrearage: 0.00, //缓交金额
        haveFees: 0.00 //已缴金额
    }

    //日期选择器渲染
    laydate.render({
        elem: '#laydate',
        type: 'year'
    })


    //转换静态表格
    var stuTable = table.render({
        elem: '#vesselTableInfo',
        where: {info:null},
        height: 316,
        url: '/standard/getStantardByInfo',
        cols: [[
            {
                field: '', width: 80, sort: true, title: '序  号', align: 'center',
                templet(d) {
                    return d.LAY_INDEX
                }
            },
            {
                field: 'projectId', width: 120, sort: true, title: '项目编号', align: 'center'
            },
            {field: 'projectName', width: 150, title: '项目名称'},
            {field: 'amountReceivable', width: 130, align: 'center', title: '应收金额'},
            {
                field: 'preferentialPrice', width: 130, align: 'center', title: '减免金额',
                style: 'color : #FFB800'
            },
            {field: 'actualPrice', width: 130, align: 'center', title: '实收费用'},
            {
                field: 'arrearage', width: 130, align: 'center', title: '缓交金额',
                style: 'color : #ff0033'
            },
            {
                field: 'haveFees', width: 130, align: 'center', title: '已缴金额',
                style: 'color:#33cc33'
            },
            {field: 'remark', title: '备  注'},
            {field: '', width: 150, align: 'center', title: '操  作', fixed: 'right', toolbar: '#editTool'}
        ]],
        toolbar: '#utilsHeader',
        loading: true, //显示加载条
        text: {
            none: '暂无学生信息，请搜索'
        },
        title: '学生收费标准',
        done: function (res) {

        },
        // layui异步请求
        parseData: function (res) {
            return {
                "code": res.code,
                "msg": res.msg,
                "count": res.count,
                "data": res.data
            }
        }
    })
    //表单渲染
    form.on('submit(send)', function (d) {
        //存入用户信息
        userinfo = d.field.info
        layer.msg('已查询')
        stuTable.reload({
            where: {
                'info': userinfo
            },
            done: function (res) {
                // console.log("done", res)
                //每次更新将总计对象归0
                money = {
                    amountPrice: 0.00, //应收费用
                    preferentialPrice: 0.00, //减免金额
                    actualPrice: 0.00, //实收费用
                    arrearage: 0.00, //缓交金额
                    haveFees: 0.00 //已缴金额
                }
                $.each(res.data, function (i) {
                    money.amountPrice += res.data[i].amountReceivable
                    money.preferentialPrice += res.data[i].preferentialPrice
                    money.actualPrice += res.data[i].actualPrice
                    money.arrearage += res.data[i].arrearage
                    money.haveFees += res.data[i].haveFees
                })
                //填充数据总计
                $.each($('.bill'), function (i) {
                    //获取信息文本
                    var text = $(this).text().split(':')[0]
                    //保留两位小数
                    $(this).text(text + " : " + money[$(this).attr('pricetype')].toFixed(2))
                })

                //初始化数据信息
                var projectNum = []
                $.each(res.data, function (d) {
                    //遍历一选择的项目id
                    projectNum[d] = res.data[d].projectId
                })
                //获取穿梭框列表数据
                $.get({
                    url: '/standard/projectList',
                    dataType: 'json',
                    success: res => {
                        //对穿梭框进行修饰
                        transfer.render({
                            elem: '#transfer',
                            data: res.data,
                            value: projectNum,
                            id: 'tran',
                            width: 300,
                            title: ['待选项目', '已选项目'],
                            parseData: function (r) {
                                //此处遍历将右侧数据 disabled = true
                                if (projectNum.includes(r.projectId)) {
                                    //右表存在该数据,禁止移动该数据
                                    r.disabled = true
                                }
                                return {
                                    "value": r.projectId,
                                    "title": r.projectName,
                                    "disabled": r.disabled,
                                    "checked": r.checked,
                                    "basicPrice": r.basicPrice //新增一个固定额度
                                }
                            },
                            //监听穿梭框数据变化
                            onchange: function (data, index) {                                //将转右侧数据，保存记录
                                // console.log(data); //得到当前被穿梭的数据
                                // console.log(index); //如果数据来自左边，index 为 0，否则为 1
                                if (index == 0) {
                                    //将数据修改数据追加到数组
                                    //追加数组数据的方法
                                    Array.prototype.push.apply(rightTransfer, data)
                                }
                                if (index == 1) {
                                    for (var i = 0; i < rightTransfer.length; i++) {
                                        if (rightTransfer[i].value == data[i].value) {
                                            rightTransfer.splice(i, 1)
                                            return //此处无需break，因为一旦查到必定是唯一
                                        }
                                    }
                                }
                            }
                        })
                    }
                })
                // 显示确认按钮
                $(".transfer-sure").show()
            }
        })

        $.get({
            url: '/standard/getStuInfo',
            data: d.field,
            dataType: 'json',
            success: res => {
                // 隐藏搜索动画框
                $('.vessel-wxb-find').hide()
                if (res.state == '200') {
                    $('.vessel-form-userInfo input').each(function () {
                        const n = $(this).attr('name')
                        // 将对象数据遍历到input
                        $(this).val(res.data[n]);
                    })
                } else {
                    layer.msg('未查询到用户信息')
                }

            }
        })
        return false;
    })

    // 表格监听，增加项目
    table.on('toolbar(stuTable)', function (obj) {
        var e = obj.event
        if (e === 'addproject') {
            layer.open({
                title: '新增标准',
                type: 1,
                content: $('#vesseltransfer'),
                area: ['800px', '500px'],
                cancel: function () {
                    // console.log("关闭")
                    // 隐藏掉穿框项
                    $('#vesseltransfer').hide()
                }
            })
        }
    })
    table.on('tool(stuTable)', function (obj) {
        var e = obj.event
        pid = obj.data.id //导入pid
        if (e === 'edit') {
            layer.open({
                title: '标准编辑',
                type: 1,
                content: $('#projectInfo').html(),
                area: ['800px', '500px'],
                success:()=>{
                    console.log(obj)
                    form.val('projectInfo',obj.data)

                    form.render()
                },
                cancel: function () {
                    //隐藏修改表单
                    $('#projectInfo').hide()
                }
            })
        } else if (e === 'del') {
            layer.confirm('确认删除该项目标准吗', function () {
                $.get({
                    url: '/standard/delProject',
                    data: {id: obj.data.id},
                    dataType: 'json',
                    success: res => {
                        if (res.state == '200') {
                            layer.msg('删除成功')
                            layer.close(layer.index - 1) //关闭弹出层
                            stuTable.reload(); //重载表单
                        }
                    }
                })
            })
        }
    })


    //保存穿梭框选择的信息
    $('.transfer-sure-btn').click(function () {

        //将穿梭框数据传递到表格
        var getTabDate = []
        //获取当前时间戳
        var projectId = new Date().getTime()
        //将数据进行一次序列化
        $.each(rightTransfer, function (i) {
            console.log("rightTransfer", rightTransfer[i])
            var setdate = {
                "projectId": projectId, //值
                "projectName": rightTransfer[i].title,//标题
                "sid": userinfo,//学生id
                "amountReceivable": rightTransfer[i].basicPrice,//固定价格
                "studentName":$('input[name=studentName]').val()
            }
            getTabDate[i] = setdate
        })
        if (getTabDate.length == 0) {
            //如果监测到数组为空就不进行传递，防止后台数据异常
            layer.msg('无改动');
            layer.close(layer.index - 1);
            return;
        }
        console.log("getTabDate",getTabDate)
        $.get({
            url: '/standard/iptProjectList',
            data: {project: JSON.stringify(getTabDate)},
            dataType: 'json',
            success: res => {
                if (res.state == '200') {
                    //添加成功
                    layer.msg('添加成功');
                    layer.close(layer.index - 1);
                    //请求完成后重载数据表格，刷新session存储的project
                    stuTable.reload();
                    //清理rightTransfer数据，保证下一次添加没有数据残留
                    rightTransfer.splice(0, rightTransfer.length)
                    //隐藏穿梭框
                    $('#vesseltransfer').hide()
                } else {
                    layer.msg('添加失败', {time: 1500})
                }
            }
        })

    })


    //编辑修改标准信息提交
    form.on('submit(projectInfoSend)', function (d) {
        console.log($('#projectInfo input'))
        $('#projectInfo input').css({"color": "#000"})
        console.log(d.field)
        var f = d.field
        f.sid = userinfo //添加对象信息——学号
        f.id = pid
        console.log("f", f)
        //对数据开启分析
        const b = false;
        if (f.filtering == '') {
            console.log("启动分析了")
            //减免金额，必须小于，等于 应收金额 ，否则不予通过
            if (parseFloat(f.preferentialPrice) > parseFloat(f.amountReceivable)) {
                layer.msg('减免金额超过应收金额')
                $('input[name=preferentialPrice]').css({"color": "red"})
                $('input[name=amountReceivable]').css({"color": "red"})
                return false
            }
            //实收费用应该等于，应收减去减免
            if (parseFloat(f.actualPrice) != (parseFloat(f.amountReceivable) - parseFloat(f.preferentialPrice))) {
                layer.msg('实收费用核对错误')
                $('input[name=actualPrice]').css({"color": "red"})
                return false
            }
            //缓缴金额不得大于实收金额
            if (parseFloat(f.arrearage) > parseFloat(f.actualPrice)) {
                layer.msg('缓缴金额不得大于实收金额')
                $('input[name=arrearage]').css({"color": "red"})
                $('input[name=actualPrice]').css({"color": "red"})
                return false
            }


            if (parseFloat(f.actualPrice) != (parseFloat(f.haveFees) + parseFloat(f.arrearage))) {
                layer.msg('实收费用核对错误')
                $('input[name=actualPrice]').css({"color": "red"})
                $('input[name=haveFees]').css({"color": "red"})
                $('input[name=arrearage]').css({"color": "red"})
                return false
            }
        }
        layer.confirm('确认修改吗', function () {
            f.studentName = $('input[name=studentName]').val()
            //数据修改
            $.get({
                url: '/standard/uptProject',
                data: f,
                dataType: 'json',
                success: res => {
                    console.log('处理结果', res)
                    if (res.state == '200') {
                        //隐藏修改表单
                        $('#projectInfo').hide()
                        layer.msg('修改成功', {time: 1500})
                        layer.close(layer.index - 1) //关闭 comfirm
                        layer.close(layer.index - 2)//关闭 ipt
                        stuTable.reload()
                    } else {
                        //处理结果失败
                        layer.msg('修改失败')
                        layer.close(layer.index - 1)
                    }
                }
            })
        })

    })
})

//表单非负监听
$('#projectInfo input').change(function () {
    if ($(this).val() < 0) {
        $(this).val('0')
    }
})
